package com.geo.common.result;

/**
 * 结果代码枚举
 * 
 * @author GEO Team
 * @version 1.0
 */
public enum ResultCode {
    
    // 通用结果代码
    SUCCESS("200", "操作成功"),
    FAILURE("500", "操作失败"),
    INVALID_PARAM("400", "参数无效"),
    UNAUTHORIZED("401", "未授权"),
    ACCESS_DENIED("403", "访问拒绝"),
    NOT_FOUND("404", "资源不存在"),
    METHOD_NOT_ALLOWED("405", "方法不允许"),
    INTERNAL_ERROR("500", "内部服务器错误"),
    
    // 用户相关错误代码
    USER_NOT_FOUND("1001", "用户不存在"),
    USER_ALREADY_EXISTS("1002", "用户已存在"),
    EMAIL_ALREADY_EXISTS("1003", "邮箱已被使用"),
    PHONE_ALREADY_EXISTS("1004", "手机号已被使用"),
    INVALID_CREDENTIALS("1005", "用户名或密码错误"),
    USER_LOCKED("1006", "用户账户已锁定"),
    USER_DISABLED("1007", "用户账户已禁用"),
    USER_INACTIVE("1008", "用户账户未激活"),
    PASSWORD_EXPIRED("1009", "密码已过期"),
    
    // 认证相关错误代码
    TOKEN_EXPIRED("2001", "令牌已过期"),
    TOKEN_INVALID("2002", "令牌无效"),
    TOKEN_MISSING("2003", "令牌缺失"),
    LOGIN_REQUIRED("2004", "需要登录"),
    PERMISSION_DENIED("2005", "权限不足"),
    ROLE_NOT_FOUND("2006", "角色不存在"),
    PERMISSION_NOT_FOUND("2007", "权限不存在"),
    
    // 文件相关错误代码
    FILE_NOT_FOUND("3001", "文件不存在"),
    FILE_UPLOAD_FAILED("3002", "文件上传失败"),
    FILE_DELETE_FAILED("3003", "文件删除失败"),
    FILE_TOO_LARGE("3004", "文件大小超过限制"),
    INVALID_FILE_TYPE("3005", "不支持的文件类型"),
    FILE_PROCESSING_FAILED("3006", "文件处理失败"),
    STORAGE_SERVICE_ERROR("3007", "存储服务错误"),
    
    // AI模型相关错误代码
    AI_MODEL_NOT_FOUND("4001", "AI模型不存在"),
    AI_MODEL_UNAVAILABLE("4002", "AI模型不可用"),
    AI_API_ERROR("4003", "AI接口调用失败"),
    AI_QUOTA_EXCEEDED("4004", "AI使用配额已超限"),
    AI_RATE_LIMITED("4005", "AI接口调用频率受限"),
    AI_CONTENT_FILTERED("4006", "AI生成内容被过滤"),
    
    // 内容相关错误代码
    CONTENT_NOT_FOUND("5001", "内容不存在"),
    CONTENT_ACCESS_DENIED("5002", "内容访问权限不足"),
    CONTENT_ALREADY_PUBLISHED("5003", "内容已发布"),
    CONTENT_NOT_PUBLISHED("5004", "内容未发布"),
    CONTENT_REVIEW_FAILED("5005", "内容审核失败"),
    KEYWORD_NOT_FOUND("5006", "关键词不存在"),
    KEYWORD_ALREADY_EXISTS("5007", "关键词已存在"),
    
    // 商家相关错误代码
    MERCHANT_NOT_FOUND("6001", "商家不存在"),
    MERCHANT_ACCESS_DENIED("6002", "商家访问权限不足"),
    MERCHANT_SUBSCRIPTION_EXPIRED("6003", "商家订阅已过期"),
    MERCHANT_QUOTA_EXCEEDED("6004", "商家使用配额已超限"),
    
    // 平台相关错误代码
    PLATFORM_NOT_FOUND("7001", "发布平台不存在"),
    PLATFORM_AUTH_FAILED("7002", "平台认证失败"),
    PLATFORM_PUBLISH_FAILED("7003", "平台发布失败"),
    PLATFORM_CONFIG_ERROR("7004", "平台配置错误"),
    
    // 数据相关错误代码
    DATA_NOT_FOUND("8001", "数据不存在"),
    DATA_INTEGRITY_ERROR("8002", "数据完整性错误"),
    DATABASE_ERROR("8003", "数据库错误"),
    CACHE_ERROR("8004", "缓存错误"),
    
    // 业务规则相关错误代码
    BUSINESS_RULE_VIOLATION("9001", "违反业务规则"),
    OPERATION_NOT_ALLOWED("9002", "不允许的操作"),
    RESOURCE_CONFLICT("9003", "资源冲突"),
    DEPENDENCY_ERROR("9004", "依赖错误"),
    WORKFLOW_ERROR("9005", "工作流错误");
    
    private final String code;
    private final String message;
    
    ResultCode(String code, String message) {
        this.code = code;
        this.message = message;
    }
    
    public String getCode() {
        return code;
    }
    
    public String getMessage() {
        return message;
    }
    
    /**
     * 根据代码查找结果代码
     * @param code 代码
     * @return 结果代码
     */
    public static ResultCode fromCode(String code) {
        for (ResultCode resultCode : values()) {
            if (resultCode.code.equals(code)) {
                return resultCode;
            }
        }
        return FAILURE;
    }
}